%% Matlab数学应用基础函数
%% 1.数字格式
format %十进制短格式，小数点后4位
format short %十进制短格式，小数点后4位
format long %小数点后15位
format shortE %短科学计数法，小数点后4位
inf %无穷大数
eps %浮点数的精度，运算时计算机的最小值
Nan%或nan 不定量
abs(x) %数值x的绝对值
vpa(x,n) %显示数值x，整数和小数部分一共n位
fix(x) %数值x向0取整
round(x) %数值x四舍五入取整
ceil(x) %数值x向右取整
floor(x) %数值x向左取整
gcd(x,y) %数值x，y的最大公约数
lcm(x,y) %数值x，y的最大公倍数
mod(x,y) %数值x/y的余数
imag(x) %复数x的虚数
real(x) %复数x的实数
angle(x) %复数x的相角
conj(x) %复数x的共轭
b=sym('n'); %将数值n转换为符号形式，返回b
upper('c')%将小写字母c转化为大写字母C
lower('C')%将大写字母C转化为小写字母c
%逻辑运算介绍：与运算 a&b;或运算 a|b;非运算b=~a;异或运算 xor(a,b)
%% 2.数组，矩阵
%%  2.1.若a为一数组
sort(a) %a元素按从小到大排序，若a为矩阵,则a按列升序排序
sort(a,'descend') %a元素按从大到小排序
norm(a) %向量a的2-范数（向量元素绝对值的平方和的平方根，a为矩阵时，为a'*a矩阵最大特征值的平方根）
norm(a,1); %计算向量a的1-范数（向量元素绝对值之和，a为矩阵时，为矩阵列元素绝对值之和的最大值）
norm(a,inf); %计算向量a的无穷大范数（所有向量元素绝对值中的最大值，a为矩阵时，为矩阵行元素绝对值之和的最大值）
mean(a); %计算向量a的算数平均值
median(a); %计算向量a的中值
sum(a) %a元素求和，若a为矩阵，则a按列求和
prod(a) %a元素求积，若a为矩阵,则a按列求积
cumsum(a) %a元素求累加和，若a为矩阵,则a按列求累加和
cumprod(a) %a元素求累乘积，若a为矩阵,则a按列求累乘积
std(a) %a元素求标准差，若a为矩阵，则a按列求标准差
std(a,1,1) %a元素求总体标准差，若a为矩阵，则a按列求总体标准差
std(a,1,2) %a元素求总体标准差，若a为矩阵，则a按行求总体标准差
corrcoef(a) %返回a的相关系数矩阵，第i行第j列元素为a中第i列与第j列相关系数
length(a) %a中元素个数
max(a) %返回a中最大元素；若a为m×n矩阵(n>1)，则返回a每列向量中最大的元素，组成一个行向量
[y,k]=max(a); %返回a中最大元素y及其序号k，a为矩阵时，返回a每列最大值组成行向量y，k记录每列最大值对应行号，为行向量
max(a,[],'all') %%返回m×n矩阵(n>1)a中最大元素
max(a,[],'2') %%返回m×n矩阵每行上的最大值为列向量
%矩阵a的条件数等于a的范数与a逆矩阵的范数的乘积，条件数越接近1矩阵性能越好
cond(a,1); %计算a的1-范数下的条件数
cond(a); %计算a的2-范数下的条件数
cond(a,inf); %计算a的无穷大范数下的条件数
fft(a); %a数据列的快速傅里叶变换
ifft(a); %a数据列的快速傅里叶逆变换
%%  2.2.矩阵数值运算
a=m:p:n; %生成初始值：步长：终值的行向量,若p缺省，则默认p=1
a=linspace(m,n,h); %生成起始值为m，终值为n，分成h-1段的行向量
%a1,a2为每行元素数量相同的矩阵，则：
a=[a1;a2]; %a1,a2上下拼接为矩阵a
%a1,a2为每列元素数量相同的矩阵，则：
a=[a1,a2]; %a1,a2左右拼接为矩阵a
%若a为矩阵
a(m,:); %表示第m行所有元素
a(:,m); %表示第m列所有元素
a(:); %将a各列向量从左到右堆叠成一列，形成一个列向量
a(m:n:q,x:y:z); %a矩阵中m到n以q为间隔的行与x到y以z为间隔的列所有的元素形成的矩阵
[m,n]=find(a>x); %返回a矩阵中大于x的元素所在行标数组m，列标数组n，形成数组
diag(a) %提取a对角线元素返回列向量，若a为列向量，则生成以a作为对角线元素的对角矩阵
diag(a,k) %提取第k条对角线元素返回列向量(k>0往上取，k<0往下取)，若a为列向量，则产生以a作为第k条对角线的矩阵
d=eig(a); %a的特征值，返回到列向量d中
[v,d]=eig(a); %a的特征向量和特征值（v为矩阵，其列向量为特征向量；d为矩阵，对角线元素为对应特征值）
rref(a); %将a化为行阶梯最简矩阵
orth(a); %a的正交化矩阵
trace(a); %a的迹（对角线元素之和）
reshape(a,[m,n]); %将矩阵a按列重排为m×n矩阵
[m,n]=size(a); %返回a的行数和列数
triu(a); %返回矩阵a的主对角线及以上的元素
triu(a,k); %返回矩阵a的第k条对角线及以上的元素
tril(a); %返回矩阵a的主对角线及以下的元素
tril(a,k); %返回矩阵a的第k条对角线及以下的元素
rot90(a,k); %返回矩阵a的逆时针方向选择90度的k倍时的矩阵，k=1时可缺省
fliplr(a); %将矩阵a左右翻转后返回
flipud(a); %将矩阵a上下翻转后返回
inv(a); %返回矩阵a的逆矩阵
pinv(a); %返回矩阵a的伪逆矩阵
null(a); %返回a的基础解系
rank(a); %返回矩阵a的秩
[l,u]=lu(a); %获得a的上三角分解矩阵l，下三角分解矩阵u，满足a=l*u
[l,u,p]=lu(a); %获得a的上三角分解矩阵l，下三角分解矩阵u，置换矩阵p，满足a=lu，a=p^(-1)*l*u
[l,a1,m]=svd(a); %获得a的奇异值分解，a=l*a1*m
a=sparse(s); %将矩阵s转化为稀疏存储方式的矩阵a
s=full(a); %将矩阵a转化为完全存储方式的矩阵s
sparse(m,n); %生成一个m*n的所有元素都为0的稀疏矩阵
sparse(u,v,s); %u,v,s为等长向量，u(i),v(i)分别为s(i)的行下标，列下标，建立稀疏矩阵
spconvert(a); %直接建立稀疏矩阵，a为一个m*3或m*4的矩阵，a(i,1)为第i个非零元素的行下标，a(i,2)第i个非零元素的列下标，
%a(i,3)第i个非零元素的实部，a(i,4)第i个非零元素的虚部，若矩阵全部元素都是实数，则无需第四列
%生成特殊矩阵
a=[]; %生成空矩阵a
eye(n); %n阶单位阵
magic(n);%n阶魔方矩阵
ones(m,n); %元素全为1的m×n矩阵
zeros(m,n); %元素全为0的m×n矩阵
rand(m,n); %元素在[0,1]均匀分布的m×n矩阵
a+(b-a)*rand(m,n); %元素在[a,b]均匀分布的m×n矩阵
randi([m,n],x,y); %元素服从m到n均匀分布的x×y矩阵
randn(m,n); %元素服从标准正态分布的m×n随机矩阵
u+o*randn(m,n); %元素服从(u,o^2)分布的m×n随机矩阵
unifrnd(a,b,[1,n]); %随机产生n个元素(范围为a~b)的行向量
vander(v);%v为一向量，产生以v为基础的范德蒙矩阵
hilb(n);%生成n阶希尔伯特矩阵(希尔伯特矩阵特点是hilb(n)(i,j)=1/(i+j-1);)
compan(p);%p为一向量，生成以p为系数向量的多项式的伴随矩阵，伴随矩阵的特征值等于多项式方程的根
pascal(n);%生成n阶帕斯卡矩阵
%% 3.向量与多项式的数值运算
%%  3.1.多项式p(x)=a0*x^n+a1*x^(n-1)+...+an-1*x+an
%p(x)的系数向量a=[a0,a1,a2,...,an],若p(x)的单根为r1，r2，...,rn
%,令r=[r1,r2,...rn]则：
y=poly2sym(a); %生成多项式（多项式中以x为自变量，其中x为符号）
y=poly(r); %生成多项式，若r为n阶矩阵，y为|x*I-a|特征多项式的n+1个系数
y=polyder(a); %返回p(x)导数的系数
y=polyder(a1,a2); %返回两多项式乘积的导数的系数
[p,q]=polyder(a1,a2); %返回两多项式相除的导数的系数，导数分子存入p，导数分母存入q
y=roots(a); %返回p(x)的n个根
y=polyval(a,x); %返回p(x)在x的值，x为方阵时，计算方阵中每一个元素的多项式运算，返回方阵
y=polyvalm(a,x); %返回p(x)在x(x为方阵)的值，进行方阵的运算
%若a1,a2为两多项式f(x),g(x)的系数向量，则：
y=conv(a1,a2); %返回f(x)*g(x)的系数向量
[div,rest]=deconv(a1,a2); %返回商多项式的系数向量div，余数多项式的系数向量rest，有关系：f(x)=g(x)*商+余数
%%  3.2.匿名函数建立及其运算：可建立匿名函数f=@(x1,x2,...,xn)f(x1,x2,...,xn);
a=fzero(f,x0); %求匿名函数f在x0附近的零点，返回值a
a=fzero(f,[m,n]); %求匿名函数f在区间[m,n]的零点，返回值a，要求f(m)*f(n)<0
[x,y]=fminbnd(f,a,b); %求匿名函数f在[a,b]上的最小值点x，与最小值y
[X,y]=fminsearch(f,X0); %求多元匿名函数f在X0附近最小值点X，最小值y
integral(f,a,b) %求一元匿名函数f在[a,b]上的积分值,使用integral(f,a,b,'RelTol',1e-20)可获得高精度的值
%对于数值向量可以用integral(f,a,b,'RelTol',1e-20,'ArrayValued',true)求积分
integral2(f,a,b,c,d) %求二元匿名函数f在[a,b]*[c,d]上的二重积分值
integral3(f,a,b,c,d,e,f) %求三元匿名函数f在[a,b]*[c,d]*[e,f]上的三重积分值
%quadndg(f,[x1,x2,...,xn],[x11,x22,...,xnn])可求多元匿名函数的多重积分值
%% 4.符号运算
%%  4.1.符号变量的建立：syms x1 x2 ... xn %声明变量x1,x2,...,xn
%建立符号表示式：f=f(x1,x2,...,xk);
%分段函数表示：f=piecewise('a','f1(x)','b','f2(x)');定义域为a时函数为f1(x),定义域为b时函数为f2(x)
%多元函数的雅克比矩阵
%有多元函数：y1=f1(x1,x2,...,xn);y2=f2(x1,x2,...,xn);...,ym=fm(x1,x2,...,xn);
%则：j=jacobian(y,x);可求多元函数的雅克比矩阵，其中y为函数矩阵，x为自变量矩阵
%h=hessian(y,x);可求多元函数的Hessian矩阵
gcd(f1,f2) %提取f1,f2最大公约式
a=eval(f); %若运算到此步时，f有具体数值，则可返回f的数值为a
y=str2sym('f(x1,x2...,xn)'); %将字符串转化为符号表达式
b=sym(a); %a为数值，则返回其符号类型
limit(f,x,a); %求f关于自变量x在a处的极限值
limit(f,x,a,'right'); %求f关于自变量x在a处的右极限值
limit(f,x,a,'left'); %求f关于自变量x在a处的左极限值
limit(f,x,inf,'right'); %求f关于自变量x左无穷处极限值
limit(f,x,inf,'left'); %求f关于自变量x右无穷处极限值
diff(f,x,n); %求f关于自变量x的n阶偏导数
int(f,x,a,b); %求f关于自变量x在区间[a,b]上的定积分
int(f,x); %求f关于自变量x的不定积分(结果中没有任意常数）
symssum(f,x,a,b); %求数列f关于自变量x从a到b求和
symprod(f,k,a,b); %数列f关于自变量k从a到b求积
taylor(f,x,a,'order',n); %求f关于自变量x在x=a处的泰勒展开式前n项，若a缺省，则默认a=0
fourier(f,x,w);%对自变量为x的函数f进行傅里叶变换，变换后自变量为w
ifourier(F,w,x);%对自变量为w的函数F进行傅里叶逆变换，变换后自变量为x
laplace(f,x,s);%对自变量为x的函数f进行拉普拉斯变换，变换后自变量为s
ilaplace(f,s,x);%对自变量为s的函数F进行逆拉普拉斯变换，变换后自变量为x
%%  4.2.方程组的求解：若有方程组：f1=0;f2=0;...;fn=0;方程中含有n个自变量x1,x2,...xn,令：
%f=[f1,f2,...,fn],vars=[x1,x2,...,xn]
y=solve(f,vars); %返回方程组的解向量，对应于vars
vars=solve(f,vars); %返回方程组的解向量更新vars
vpasolve(eqns,vars) %求方程组准解析解
ff=optimset;ff.TolX=1e-5;ff.TolFun=1e-5;
fsolve(f,x0,ff)%求满足以上精度的解
%注：只能求解具有形式解的方程组
%求解微分方程组：声明变量：syms y(x) %x是符号变量，y(x)是x的符号变量，使用diff(f,x,n)构造微分方程：
dsolve(eqns) %求微分方程组eqns的解
dsolve(eqn,cond) %求微分方程eqn在条件cond下的解
%ode45()函数可以求解一阶微分方程组在自变量在某一区间的数值解，设微分方程组为：
% diff(y(1))=f1(x(1),x(2),...,x(n));diff(y(2))=f2(x(1),x(2),...,x(n));...,则可以写为：
% y=[f1(x(1),x(2),...,x(n));f1(x(1),x(2),...,x(n)),...,f1(x(1),x(2),...,x(n))];方程组需用符号变量声明或用匿名函数建立
[x,y]=ode45(eqns,tspan,y0); %求解微分组eqns在自变量范围为tpan，初值为y0情况下的数值解
%%  4.3.符号表达式的化简与替换
collect(f,x) %将f按照变量x合并同类项
a=factor(f); %将f分解因式,返回a
f=prob(a);%将因式分解后的因子乘起来返回多项式
f1=latex(f);%将多项式按照latex排版表示
subs(f,old,new); %将符号表达式f中变量old替换为new
%% 5.概率分布
%泊松分布：可设参数为：
lamda=2;x=[0,1,2,3];
y=pdf('poiss',x,lamda);%泊松分布，其中lamda为正整数，返回y为概率密度分布，对应于向量x的值
y1=cdf('poiss',x,lamda);%泊松分布，其中lamda为正整数，返回y1为分布函数，对应于向量x的值
x=icdf('poiss',F,lamda);%泊松分布，其中lamda为正整数，已知F为分布函数，返回对应变量x的值
%生成随机数：可设参数为；
n=1;m=4;
a=random('poiss',lamda,n,m);%生成n*m的服从泊松分布的随机数阵
%正态分布：可设参数为：
u=0;delta=1;x=-10:0.01:10;
y=pdf('norm',x,u,delta);%泊松分布，其中u,delta为参数，返回y为概率密度分布，对应于向量x的值
y1=cdf('norm',x,u,delta);%泊松分布，其中u,delta为参数，返回y1为分布函数，对应于向量x的值
x=icdf('norm',F,u,delta);%泊松分布，其中u,delta为参数，已知F为分布函数，返回对应变量x的值
%生成随机数：可设参数为；
n=1;m=4;
a=random('norm',u,delta,n,m);%生成n*m的服从正态分布的随机数阵
%matlab提供满足以上规律的分布，常见的有：
% beta beta分布 参数：a,b;   bino 二项分布 参数：n,p;   chi2 卡方分布 参数：k;
% ev   极值分布 参数：u,delta;exp 指数分布 参数：lamda; f       F分布 参数：p,q;
% unif 均匀分布 参数：a,b;   t       T分布 参数：k;     gam  伽马分布 参数：a,lamda;
% geo  几何分布 参数：p;     hyge 超几何分布 参数：m,p,n
%设有一组离散数据：
x=[1,2,3,4,3,2,7,6,5,8,9,0,7,5,2];
%数据区间为：
b=0:1:9;%则b有9个子区间，分别为[0,1][1,2],...,[8,9],则：
k=histogram(x,b);%统计每个子区间中x元素个数，并绘制直方图
%在实际中测出一组数据：x=[x1,x2,...,xn];则有：
m=mean(x);%返回数据平均值
s2=var(x);%返回数据方差s2=1/n*sum(xi-m)^2
s=std(x);%返回数据无偏方差s=1/(n-1)*sum(xi-m)^2
ar=sum(x.^r)/length(x);%返回数据r阶原点矩
br=moment(x,r);%返回数据r阶中心矩
%在实际中测出n组数据：x=[x1,x2,...,xn];其中每一列代表一类数据，则有：
c=cov(x);%返回各类数据间的协方差矩阵
%不妨设:
[x,y]-meshgrid(-3:0.1:1,-2:0.1:4);x=[x(:),y(:)];u=[-1,2]';delta=[1,1;1,sqrt(3)];
p=pdf('mvn',x,u,delta.^2);%求随机变量联合概率密度函数
%参数估计与区间估计
[u,delta2,ku,kdelta2]=fittest('norm',x,pci);%实测数据为x，pci为置信度，u为该分布均值，delta2为该分布方差
%ku及kdelta2为置信区间
%% 6.图形绘制
%%  6.1.对于二维数值运算的绘图
subplot(m,n,k) %将当前窗口分割为m×n个子图，指定第k个子图为当前子图
plot(x,y,'b*-') %以x元素为横坐标，y对应元素为纵坐标，‘b*-’为颜色+点型+线型组合，有以下常用
%颜色：b蓝色，y黄色，g绿色，r红色；点型：.点，*标记*，x标记x；线性：-实线，:点线，-.点画线，--虚线
plot(x,y,'b*-',x,y,'linewidth',5,'markersize',10) %设置线宽，点型大小
axis([xmin,xmax,ymin,ymax]) %设置当前坐标轴x，y坐标范围
title('string') %添加标题
xlabel('string') %添加x轴标题
ylabel('string') %添加y轴标题
text(x,y,'string') %在(x,y)处添加文字说明
polarplot(theta,rho,'s') %在极坐标绘图，theta为极角，rho为极径，参数s与plot相似
comet(x,y) %绘制二维质点动画轨迹
bar(x,y,'s') %直方图，默认为'Group'形式（簇状分组）；'Stack'为堆积分组
rose(theta,x) %极坐标下直方图，x用于指定区间的划分方式
stem(x,y,'s') %杆图
stairs(x,y,'s') %阶梯图
semilogx(x,y,'s') %半对数表示图，x为常用对数坐标
semilogy(x,y,'s') %半对数表示图，y为常用对数坐标
loglog(x,y,'s') %半对数表示图，x，y均为常用对数坐标
fill(x,y,'s') %填充闭合图形，x为闭合图形闭合曲线逆时针的横坐标点构成向量，y同理
pie(x,ex) %绘制饼图，ex代表要脱离饼图的部分
quiver(x,y,u,v) %绘制矢量图，(x,y)为矢量起点坐标，(u,v)为矢量终点坐标
legend('a','b','c','d','f') %对所给数据每一部分显示一个图例
hold on %保持图形编辑图
hold off %取消图形保持
grid on %加坐标网格
box on %加边框
%若x做分母可能取到0，则用x+eps取代x做分母
plotyy() %双纵轴表示
plotyyy() %三纵轴表示
plot4y()%四纵轴表示
%%  6.2.对于符号及匿名函数的运算
%若f为匿名函数f=@(x)f(x)，或符号函数syms x f=f(x),则：
fplot(f,[xmin,xmax],s); %在指定范围[xmin,xmax]内画出f的图像
ezplot(f,[a,b]); %绘制f在[a,b]上的图形，若f为隐函数f(x,y)=0,则在a<x<b,a<y<b，上绘制f(x,y)=0
%若通过符号函数确定参数方程:syms x y t x=funx(t);y=funy(t)，则:
fplot(x,y,[a,b]) %在t区间[a,b]上绘制x，y定义的曲线，若[a,b]缺省，则默认[a,b]=[-5,5]
%%  6.3.三维图形绘制
%对于三维数量值函数，三维绘制与二维绘制相似，若z=f(x,y)有以下基本函数：
plot3(x,y,z,'b*-');
%%   6.3.1.三维符号函数及匿名函数运算的绘制：
%对于符号函数及匿名函数定义的f：
fplot3(x,y,z,[a,b]); %在a<t<b中绘制x=x(t),y=y(t),z=z(t）
fsurf(f,[xmin,xmax,ymin,ymax]) %在区间[xmin,xmax]*[ymin,ymax]绘图
fmesh(f,[xmin,xmax,ymin,ymax]) %在区间[xmin,xmax]*[ymin,ymax]绘制网格图
%对于参数方程：x=funx(u,v),y=funy(u,v),z=funz(u,v)确定的曲线：
fsurf(x,y,z,[umin,umax,vmin,vmax]); %指定区间绘图
fmesh(x,y,z,[umin,umax,vmin,vmax]); %指定区间绘制网格图
%%   6.3.1.三维数值运算曲面图的绘制：
%对于二元函数z=f(x,y),设其定义域为[a,b]*[c,d]，则：
%x=a:p1:b; %步长p1
%y=c:p2:d; %步长p2
[X,Y]=meshgrid(x,y); %按上述定义生成网格节点的坐标矩阵
Z=f(X,Y); %按照z=f(x,y)定义生成函数值矩阵Z
mesh(X,Y,Z); %绘制网格曲面并赋以颜色
meshc(X,Y,Z); %绘制网格曲面并赋以颜色，并绘制等高线
meshz(X,Y,Z); %绘制网格曲面并赋以颜色，并绘制等底座
surf(X,Y,Z); %绘制光滑曲面
surfc(X,Y,Z); %绘制光滑曲面，并绘制等高线
surfl(X,Y,Z); %绘制光滑曲面，添加光照效果
rotate(h,v,a);%将图形h绕v沿正方形旋转角度a
view(a,b);%从y轴负方向起，向x轴正方向a度，仰角为b的视角观察图形
view(x,y,z);%在(x,y,z)处观察图形
view(2);%俯视图形
shading flat %对曲面平滑并除去网格线
shading interp %在网格片内采用颜色插值处理
%柱面和球面图的绘制
(X,Y,Z)=cylinder(r,n); %返回一个半径为r，高度为1的圆柱体x,y,z的坐标，圆柱体圆周有n个距离相同的点
(X,Y,Z)=sphere(n); %在三个大小为(n+1)*(n+1)的矩阵中返回n*n球面的坐标
%坐标返回后可以使用surf或mesh绘图
%% 7.程序输入输出与设计
%函数文件：
%function [y1,y2,...,yn]=函数名(x1,x2,...,xn) %yi为输出参数，xi为输入参数
%函数参数的输入输出具有可调性：用：
%nargin可以控制实参的输入个数；nargout可以控制实参的输出个数
%输入，输出方式：
x=input('提示符号串'); %输入数值赋给x，例如：x=input('x=');
disp(x); %直接输出
fprintf('x=%.5f y=%.6f\n',x,y); %按照形式输出x，y的值
pause(n) %暂停n秒后执行文件
pause on %允许其后的暂停文件起作用
pause off %不允许其后的暂停文件起作用
warning('message') %显示警告信息message
%可以用save和load命令存储和读取文件数据
save mydata A B C %将A,B,C数据存储在文件名为mydata的文件中，load命令用法相同
%matlab与excel交互
x=xlsread(filename,sheet,x1range); %读取文件名为filename，第sheet栏中，范围为x1range的数据
%% 7.1.选择语句
%单分支if语句
if a
    yuju;
end
%当条件a成立时，执行yuju
%双分支if语句
if a
    yuju;
else
    yuju2;
end
%当条件a成立时，执行yuju;否则执行yuju2
%多分支if语句
if a
    yuju;
elseif b
    yuju2;
else
    yuju3;
end
%当a成立时，执行yuju，否则，b成立时执行yuju2，否则执行yuju3
%switch语句
switch a
    case a1
        yuju1;
    case a2
        yuju2;
    otherwise
        yuju3;
end
%计算表达式a的值，若结果为a1，则执行yuju1，若结果为a2，执行语句2，否则执行语句3
%% 7.2.循环语句
%for语句
for i=c
    yuju
end
%for语句针对向量c中的每一个元素执行一次循环体yuju，退出循环之后循环变量的值是向量中最后的元素值，向量为空时，循环体...
%一次也不执行
%while语句
while a
    yuju
end
%当条件a成立时执行yuju，直到a不成立时跳出循环
while a
    if b
        break
    end
end
%执行循环时，当进行到选择语句时条件b成立，则跳出循环
while a
    if b
        continue
    end
end
%执行循环时，当进行到选择语句时条件b成立，则跳出本次循环，进行下一次循环
